// 双指针法
// 快指针和慢指针，初始时都指向头节点
// 慢指针每次走一步，快指针每次走两步，不断比较它们指向节点的值
// 如果节点值相同，说明有环
// 类似追及问题，两个人在环形赛道上赛跑，同一个起点出发，一个跑的块，一个跑的慢
// 在某一个时刻，跑的快的必定会追上跑得慢的，只要跑道是环形的，不是环形就肯定追不上
var hasCycle = function (head) {
  let fast = head;
  let slow = head;
  while (fast) {
    if (fast.next == null) return false;
    slow = slow.next;
    fast = fast.next.next;
    if (slow == fast) return true;
  }
  return false;
} 